<?php

/**
 * FuncionalidadeLogic
 * @package model
 * @subpackage logic
 * 
 */
class SistemaLogic extends LogicModel {

    public function __construct() {
        parent::__construct(new SistemaDAO());
    }
    
    public function ajaxListSistema($params) {

        /* Atributos do objeto que poderam ser ordenado */
        $atributos = array('nome', 'descricao', 'status');
        $order = TDataTableHelper::mountOrderBy($atributos, $params['iSortCol_0'], $params['sSortDir_0']);
        /* Colunas do banco a serem pesquisandas */
        $colunas = array('nom_sistema', 'des_sistema', 'des_status' => array('A' => 'Ativo', 'D' => 'Desativado'));
        /* Montar string de pesquisa */
        $seach = TDataTableHelper::mountSearch($colunas, $params['sSearch']);
        /* Definir where */
        $where = "des_status IN ('A','D') {$seach}";
        /* Total de registros */
        $iTotal = $this->totalRegistro($where);
        /* Listar */
        $arrayListObject = $this->listar($where, $order, null, null, $params['iDisplayStart'], $params['iDisplayLength']);
        /* Montar output */
        $output = TDataTableHelper::mountArrayOutPut($params['sEcho'], $iTotal);
        if (isset($arrayListObject[0])) {
            foreach ($arrayListObject as $objSistema) {
                $status = ($objSistema->getStatus() === 'A') ? "<spam class='fg-emerald'>Ativo</spam>" : "<spam class='fg-red'>Desativado</spam>";
                $output['aaData'][] = array(
                    utf8_encode($objSistema->getNome()),
                    utf8_encode($objSistema->getDescricao()),
                    utf8_encode($status)
                );
                unset($status);
            }
        }

        return json_encode($output);
    }

    public function listaDeSistemasAssociadosSemPerfil ($idUsuario){
        
        $usuarioLogic = new VUsuarioLogic();
        $objUsuario = $usuarioLogic->obterPorId($idUsuario);

        $list = $this->listar("ide_sistema NOT IN (
                                    SELECT ide_sistema 
                                        FROM seguranca.view_perfil 
                                            WHERE ide_perfil IN (
                                                SELECT ide_perfil 
                                                    FROM seguranca.usuario__perfil 
                                                        WHERE ide_usuario = ".$objUsuario->getId()."))
                                            AND ide_sistema IN (
                                                SELECT ide_sistema 
                                                        FROM pessoal.view_controle_pessoal
                                                        WHERE ide_colaborador = ".$objUsuario->getIdColaborador().")
                                    ");
        
        if(!$list){
            return null;
        }
        
        return $list;
    }
    
}
?>